package com.project.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.RoomBean;
import com.project.service.IRoomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("room")
public class RoomController {
    @Autowired
    private IRoomService roomService;

    /**
     * 根据条件查询对应的房间
     *
     * @return 房间对象集合
     */
    @RequestMapping("findAllOkRoom")
    public IPage<RoomBean> findAllOkRoom() {
        return roomService.findByItem(1, null, null, null, null);
    }

    /**
     * 根据选择房间的名字返回该房间的id
     *
     * @param name 房间的名字
     * @return 房间id
     */
    @RequestMapping("findByName")
    public RoomBean findByName(String name) {
        return roomService.findByName(name);
    }

    /**
     * 根据条件查询房间对象
     *
     * @param address 地址（默认null）
     * @param state   房间状态（默认null）
     * @param type    房间类型（默认null）
     * @param live    可住房间（默认null）
     * @return 分页房间对象
     */
    @RequestMapping("findByItem")
    public IPage<RoomBean> findByItem(String address, String state, String type, String live) {
        return roomService.findByItem(1, address, state, live, type);
    }

    /**
     * 通过房间的id查询房间对象详情
     *
     * @param id 房间id
     * @return 房间对象
     */
    @RequestMapping("findById")
    public RoomBean findById(int id) {
        return roomService.findById(id);
    }

    /**
     * 根据房间id删除房间，如果房间中有学生则无法删除
     *
     * @param id 房间id
     * @return 成功：OK ， 失败NO
     */
    @RequestMapping("del")
    public String del(int id) {
        if (roomService.del(id)) {
            return "OK";
        }
        return "NO";
    }

    /**
     * 添加房间
     *
     * @param address 房间地址
     * @param content 房间可容纳人数
     * @param type    房间类型
     */
    @RequestMapping("add")
    public void add(String address, int content, String type) {
        RoomBean roomBean = new RoomBean(address, content, type);
        roomService.add(roomBean);
    }
}
